package br.com.sgpv2.controler.faixaComparativo;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import br.com.sgpv2.entity.faixacomparativo.FaixaComparativo;
import br.com.sgpv2.entity.faixacomparativo.ItemFaixaComparativo;
import br.com.sgpv2.service.faixacomparativo.FaixaComparativoService;


@Controller
public class FaixaComparativoController {

	
	@Autowired
	private FaixaComparativoService faixaComparativoService; 
	
	
	@RequestMapping(value = "faixaComparativo/pesquisar", method = RequestMethod.GET)
	public String pesquisar(Model model, HttpServletRequest request) throws Exception {
		String descricao = request.getParameter("descricaoPesquisa");
		
		model.addAttribute("faixas", faixaComparativoService.consultarPorDescricao(descricao));
		
		return "faixaComparativo/faixas";
	}
	
	@RequestMapping(value = "faixaComparativo/incluir", method = RequestMethod.GET)
	public String getInclusaoPage(Model model) throws Exception {
		
		FaixaComparativo faixaComparativo = new FaixaComparativo();
		faixaComparativo.setDescricao("descrição");
		faixaComparativo.setBaseCalculo(BigDecimal.ONE);
		
		ItemFaixaComparativo itemFaixaComparativo1 = new ItemFaixaComparativo();
		itemFaixaComparativo1.setId(1);
		itemFaixaComparativo1.setParcela(100L);
		itemFaixaComparativo1.setPercentual(BigDecimal.TEN);
		itemFaixaComparativo1.setSinal(BigDecimal.TEN);
		itemFaixaComparativo1.setValorFinal(BigDecimal.ZERO);
		itemFaixaComparativo1.setValorInicial(BigDecimal.ONE);
		
		
		ItemFaixaComparativo itemFaixaComparativo2 = new ItemFaixaComparativo();
		itemFaixaComparativo2.setId(1);
		itemFaixaComparativo2.setParcela(100L);
		itemFaixaComparativo2.setPercentual(BigDecimal.TEN);
		itemFaixaComparativo2.setSinal(BigDecimal.TEN);
		itemFaixaComparativo2.setValorFinal(BigDecimal.ZERO);
		itemFaixaComparativo2.setValorInicial(BigDecimal.ONE);
		
		
		ItemFaixaComparativo itemFaixaComparativo3 = new ItemFaixaComparativo();
		itemFaixaComparativo3.setId(1);
		itemFaixaComparativo3.setParcela(100L);
		itemFaixaComparativo3.setPercentual(BigDecimal.TEN);
		itemFaixaComparativo3.setSinal(BigDecimal.TEN);
		itemFaixaComparativo3.setValorFinal(BigDecimal.ZERO);
		itemFaixaComparativo3.setValorInicial(BigDecimal.ONE);
		
		
		ItemFaixaComparativo itemFaixaComparativo4 = new ItemFaixaComparativo();
		itemFaixaComparativo4.setId(1);
		itemFaixaComparativo4.setParcela(100L);
		itemFaixaComparativo4.setPercentual(BigDecimal.TEN);
		itemFaixaComparativo4.setSinal(BigDecimal.TEN);
		itemFaixaComparativo4.setValorFinal(BigDecimal.ZERO);
		itemFaixaComparativo4.setValorInicial(BigDecimal.ONE);
		
		
		ItemFaixaComparativo itemFaixaComparativo5 = new ItemFaixaComparativo();
		itemFaixaComparativo5.setId(1);
		itemFaixaComparativo5.setParcela(100L);
		itemFaixaComparativo5.setPercentual(BigDecimal.TEN);
		itemFaixaComparativo5.setSinal(BigDecimal.TEN);
		itemFaixaComparativo5.setValorFinal(BigDecimal.ZERO);
		itemFaixaComparativo5.setValorInicial(BigDecimal.ONE);
		
		
		ItemFaixaComparativo itemFaixaComparativo6 = new ItemFaixaComparativo();
		itemFaixaComparativo6.setId(1);
		itemFaixaComparativo6.setParcela(100L);
		itemFaixaComparativo6.setPercentual(BigDecimal.TEN);
		itemFaixaComparativo6.setSinal(BigDecimal.TEN);
		itemFaixaComparativo6.setValorFinal(BigDecimal.ZERO);
		itemFaixaComparativo6.setValorInicial(BigDecimal.ONE);
		
		
//		faixaComparativo.setItensFaixaComparativo(Arrays.asList(itemFaixaComparativo1,itemFaixaComparativo2,
//				                                   itemFaixaComparativo3,itemFaixaComparativo4,itemFaixaComparativo5,itemFaixaComparativo6));
		
		
		
		model.addAttribute("faixaComparativoBean", faixaComparativo);
		model.addAttribute("itensFaixaComparativo", Arrays.asList(itemFaixaComparativo1,itemFaixaComparativo2,
               itemFaixaComparativo3,itemFaixaComparativo4,itemFaixaComparativo5,itemFaixaComparativo6));
		model.addAttribute("titleBotaoAcao", "Salvar");
		
		return "faixaComparativo/faixaComparativo-incluir";
	}
	
	@RequestMapping(value = "faixaComparativo/incluirFaixa", method = RequestMethod.POST)
	public String salvar(FaixaComparativo faixaComparativo, HttpServletRequest request) throws Exception {
		faixaComparativoService.salvar(faixaComparativo);
		return "redirect:pesquisar";
	}
	
	@RequestMapping(value = "faixaComparativo/excluir/{pk}", method = RequestMethod.GET)
	public String excluir(@PathVariable Integer pk) throws Exception {
		FaixaComparativo faixaComparativo = faixaComparativoService.buscar(pk);
		
		if(faixaComparativo !=null){
			faixaComparativoService.remover(faixaComparativo);
		}
		
		return "redirect:../pesquisar";
	}
	
	@RequestMapping(value = "/faixaComparativo/atualizar/{pk}", method = RequestMethod.GET)
	public String getAlteracaoPage(@PathVariable Integer pk,Model model) throws Exception {
		FaixaComparativo faixaComparativo = faixaComparativoService.buscar(pk);
		
		model.addAttribute("faixaComparativoBean", faixaComparativo);
		model.addAttribute("titleBotaoAcao", "Alterar");
		
		return "faixaComparativo/faixaComparativo-alterar";
	}
	
	@RequestMapping(value = "faixaComparativo/alterarFaixa", method = RequestMethod.POST)
	public String alterar(FaixaComparativo faixaComparativo) throws Exception {
		faixaComparativoService.alterar(faixaComparativo);		
		
		return "redirect:pesquisar";
	}
	
	
	@RequestMapping(value = "faixaComparativo/incluirItemFaixaComparativo", method = RequestMethod.POST)
	public String incluirItemFaixaComparativo( Model model, HttpServletRequest request) throws Exception {
		 
		String valorInicial = request.getParameter("valorInicial");
		String valorFinal = request.getParameter("valorFinal");
		String percentual = request.getParameter("percentual");
		String parcela = request.getParameter("parcela");
		String sinal = request.getParameter("sinal");
		
		ItemFaixaComparativo novoItem = new ItemFaixaComparativo();
		novoItem.setValorInicial(new BigDecimal(valorInicial));
		novoItem.setValorFinal(new BigDecimal(valorFinal));
		novoItem.setPercentual(new BigDecimal(percentual));
		novoItem.setParcela(Long.parseLong(parcela));
		novoItem.setSinal(new BigDecimal(sinal));
		
		
//		listaItens.add(novoItem);
		model.addAttribute("itensFaixaComparativo",new ArrayList<ItemFaixaComparativo>());
		return "faixaComparativo/gridItensFaixaComparativo";
	}
	
}
